Skip to content

v0.7.26: API block default headers fix, tables perf and correctness, landing redesign#5500

Merged
waleedlatif1 merged 9 commits into
mainfrom
staging
Jul 8, 2026
Merged

v0.7.26: API block default headers fix, tables perf and correctness, landing redesign#5500
waleedlatif1 merged 9 commits into
mainfrom
staging

Conversation

@waleedlatif1

Copy link
Copy Markdown
Collaborator

waleedlatif1 and others added 9 commits July 7, 2026 13:57
…l coverage (#5491)

* fix(notion): align integration with live API docs, add block retrieval coverage

- wire up notion_update_page in the block (was registered but unreachable — no dropdown option or subBlocks)
- fix legacy NotionBlock outputs to cover all 17 operations, not just content/metadata
- trim ID params (pageId, databaseId, parentId) before use in request URLs across 8 tool files
- remove content required:true on create_page (Notion allows title-only pages)
- remove dead unused NotionReadDatabaseParams interface
- add notion_retrieve_block/_v2 tool for GET /v1/blocks/{id}, filling a gap in block CRUD coverage

* fix(notion): second validation pass — pagination gaps, phantom outputs, dead types, regen docs

- add missing startCursor/start_cursor pagination param to notion_query_database and notion_search
- fix notion_search missing from the shared pageSize/startCursor field's operation condition in NotionBlock
- fix NotionV2Block title/url/created_time/last_edited_time outputs rendering unconditionally for every operation instead of only the ones that return them
- remove 153 lines of dead unused output-shape constants from types.ts
- regenerate integration docs

* fix(notion): expose retrieve-block outputs in legacy block picker

type/block/archived only conditioned on notion_update_block/notion_delete_block,
and has_children was missing entirely — Retrieve Block's payload was invisible
in the legacy NotionBlock output picker (Greptile P1 on PR #5491).

* fix(notion): document type-specific content gap on retrieve_block output

block.properties (BLOCK_OUTPUT_PROPERTIES) only covers common block fields,
not the type-specific sub-object (paragraph.rich_text, image.file, etc.) —
that varies per block type and isn't enumerable. Documented in the
description per Greptile P2 on PR #5491; no functional change, block: data
already carries the full object at runtime.
…rden Stop-all (#5492)

* fix(tables): server-authoritative run badge, tail SSE from latest, harden Stop-all

* fix(tables): return null dispatchId when Stop-all cancels a run during prep

* improvement(tables): co-locate dispatcher imports, stamp throttle clock only on fetch start

* fix(tables): table-wide hasRunning signal for Queueing label, fail fast on seq-read errors

* fix(tables): clear hasRunning on table-wide stop, refetch rows when a run resolves without a dispatch

* fix(tables): don't let dispatch-cancel cleanup mask the original prep failure

* fix(tables): reconcile null-dispatch runs via invalidation, not stale snapshot restore

* fix(tables): widen warm-cache remount check to either query cache
…one (#5465)

* fix(tables): canonicalize date cells, render times in effective timezone

* improvement(tables): render date cells wall-clock-faithful via offset-preserved storage

* fix(tables): address review — preserve midnight instants, validate calendar days, effective-zone Today
…requests (#5496)

* fix(api-block): stop spoofing a browser fingerprint on outbound HTTP requests

getDefaultHeaders() sent a Chrome User-Agent, a Referer pointing at Sim's
own app, and mismatched Sec-Ch-Ua client hints on every API block request.
Atlassian's Jira/Confluence Cloud REST API (and other browser-aware
anti-CSRF/bot-defense layers) reject requests carrying a browser
User-Agent with 403 "XSRF check failed", even with a valid Basic-auth
header and X-Atlassian-Token: no-check set.

Default headers now identify honestly as Sim, matching how other HTTP
clients (curl, Postman, axios) behave. User-supplied headers still
override any default.

* fix(testing): sync shared tool-tester mock headers with new defaults

createMockHeaders in the shared @sim/testing tool-tester builder still
hardcoded the old Chrome UA / Referer / Sec-Ch-Ua fallback values. It was
unreachable in current tests but would silently diverge from production
getDefaultHeaders() for any future test hitting its fallback path.
#5498)

* fix(copilot): keep custom blocks out of the VFS static component cache so a deleted definition doesn't linger

* fix(copilot): drop deleted-definition custom blocks from a workflow's state so the copilot can't see unrenderable blocks

* fix(copilot): don't strip placed custom blocks when the definition load fails (null vs empty set)

* refactor(copilot): drop unreachable static-cache custom-block filter

The VFS static cache is only ever built by materialize(), which runs
outside any custom-block overlay (the overlay is scoped to edit_workflow
/ get_blocks_metadata, neither of which materializes the VFS). So
getAllBlocks() there always returns first-party blocks only and no
custom block can be frozen into the cache. Removed the dead guard.
)

* feat(db): auto-apply tracked script data migrations in db:migrate

* fix(db): reset session lock_timeout before script migrations, guard journal insert

* improvement(db): re-verify advisory-lock session before script migrations
…orm UI feature cards (#5408)

* improvement(landing): homepage redesign with live hero and real platform UI feature cards

* improvement(landing): build-card workflow showcase, real Logs UI monitor window, proportional feature cards

- Build card: replace the Mothership chat loop with a static left-to-right
  support-triage workflow showcase (two triggers converging on a triage agent,
  fanning out to Linear/Slack/Gmail/Tables) on the hero's solid --surface-3
  stage, with the goo cycle loader phasing in the bottom-left corner; the chat
  animation component stays parked in build-callout/components for reuse
- Monitor card: swap the floating logs panel for the REAL platform Logs page
  captured as a full window (new capture-logs-ui pipeline), framed and
  positioned identically to the Context card, over a new canyon backdrop
- Feature cards scale like Cursor's: media stages are aspect-locked
  (3:2 desktop, 4:3 stacked) instead of fixed-height, and the UI-window
  callouts use percentage insets so the whole composition scales
  proportionally with the browser
- Eyebrow chips relocate into the copy column above the title on stacked
  breakpoints instead of overlapping the full-width media
- Extract the hero stage's block card for reuse; export the horizontal
  smoothstep edge helper; drop the unused formation-graph and
  logs-table-preview components

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(landing): use surface-hover token for voice input button

Matches the token already used by its sibling composer buttons instead of a raw hex hover color.

* fix(landing): restore SandboxWorkspacePermissionsProvider for the capture harness

Staging removed the sandbox provider as unused when the academy pages were
deleted (#5388), but the landing-preview capture route committed on this
branch imports it - the branch failed to compile after rebasing. Restore the
lightweight provider with its consumer documented.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(landing): satisfy HydrationState type in capture harness

The mock hydration state set by the readme-tour-capture route was missing
the required requestId/error fields added to HydrationState, breaking the
production typecheck.

* fix(landing): address Greptile/Cursor review findings

- hero.tsx: object-top-left isn't a real Tailwind v3 utility, so the crop
  fell back to center; use object-left-top.
- hero-workflow-stage.tsx: byId/builtIds were rebuilt on every render,
  including every drag pointermove frame; hoist the STAGE_BLOCKS lookup to
  module scope and memoize builtIds on builtCount.
- hero-platform-loop.tsx: prefers-reduced-motion was only read once on
  mount, so toggling it mid-loop didn't stop the scheduled animation;
  listen for the media query's change event like BuildChatAnimation does.
- landing-preview/page.tsx and readme-tour-capture/[workspaceId]/page.tsx:
  both are dev/preview-only scaffolds (one explicitly "local-only... delete
  before committing") that were reachable in production with no auth guard.
  404 them outside of production instead of leaving them open.

* fix(landing): reset fading when reduced motion cuts the loop short

showFinished (added when wiring up the prefers-reduced-motion change
listener) set the finished phase but left fading true if the preference
flipped mid reset-fade, leaving HeroChatLoop stuck at opacity-0.

* fix(landing): sync reduced-motion mid-reply in HeroChatLoop

The word-reveal effect only checked prefers-reduced-motion once per
showReply transition. If HeroPlatformLoop's showFinished set phase to
'reply' while it was already 'reply' (no re-render, no dependency change),
the running stream interval kept ticking at normal speed instead of
snapping to the full reply. Listen for the media query's change event,
mirroring the fix already applied to HeroPlatformLoop and BuildChatAnimation.

* fix(landing): sync reduced-motion mid-entrance in HeroStat

HeroStat's staggered count-up entrance only checked prefers-reduced-motion
once on mount, unlike the hero loops in this PR that now listen for the
media query's change event. Toggling the preference mid-entrance left the
scheduled timers/RAF running instead of snapping to the settled value.

* fix(landing): stop double-seeding query cache in capture harness

seed(queryClient) ran inside a useState lazy initializer, a render-phase
side effect that Strict Mode invokes twice. Replace it with a ref guard so
the store mutation runs exactly once, still synchronously before first
paint. Flagged across three Greptile review rounds.

* fix(landing): type the capture harness log filter seed as LogFilters

qc.setQueryData(logKeys.list(...)) requires LogFilters, but the inline
seed object had no annotation and timeRange inferred as string, which
TypeScript widened past the TimeRange literal union. Failed prod build
type-check. Also swap the stray `sandbox` prop back to `embedded` to
match Workflow's actual prop name.

---------

Co-authored-by: andresdjasso <andresdjasso@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: waleed <walif6@gmail.com>
@waleedlatif1 waleedlatif1 requested a review from a team as a code owner July 8, 2026 01:16
@greptile-apps

greptile-apps Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Too many files changed for review. (165 files found, 100 file limit)

Bypass the limit by tagging @greptile-apps to review.

@vercel

vercel Bot commented Jul 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs Error Error Jul 8, 2026 1:16am

Request Review

@cursor

cursor Bot commented Jul 8, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Large landing UX and client-bundle surface (new hero loop, features refactor) with broad layout churn; custom-block audit changes are localized API additions with low behavioral risk.

Overview
Landing moves to a wider max-w-[1460px] / px-20 gutter across the marketing site. The hero is stacked (no split panels): larger headline, Request a demo + Sign up chips instead of the email bar, a HeroStat animation, and a full-width media frame with backdrop + platform screenshot and a HeroPlatformLoop (synced chat + sliding workflow stage, sidebar hotspots). ProductDemo is a new section reusing HeroVisual below the hero.

Features drops FeatureStage / live preview backdrops for FeatureCard outlined cards with photo backdrops and real UI captures (IntegrationsCallout, KnowledgeCallout, LogsCallout); Build uses a static WorkflowShowcase + ThinkingLoader. HeroCta and TrustedBy (row layout) are simplified.

Custom blocks API records audit events on update and delete (and publish elsewhere) via recordAudit, with authorizeManage returning block context for metadata.

Notion integration docs add startCursor on query/search, document notion_retrieve_block, and align block output fields (has_children, etc.).

Reviewed by Cursor Bugbot for commit 4aba3dc. Configure here.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 4aba3dc. Configure here.

Comment thread apps/sim/app/(landing)/components/hero-cta/hero-cta.tsx
@waleedlatif1 waleedlatif1 merged commit 9d44d42 into main Jul 8, 2026
36 of 37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants